
package com.wbao.dianniu.emojiUtils;

import android.content.Context;
import android.content.res.AssetManager;

import com.wbao.dianniu.R;
import com.wbao.dianniu.utils.JsonUtil;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;


/**
 * @author : zejian
 * @time : 2016年1月5日 上午11:32:33
 * @email : shinezejian@163.com
 * @description :表情加载类,可自己添加多种表情，分别建立不同的map存放和不同的标志符即可
 */
public class EmotionUtils implements Serializable {

    /**
     * 表情类型标志符
     */
//    public static final int EMOTION_CLASSIC_TYPE = 0x0001;//经典表情

    public static final int EMOTION_TYPE_PEOPLE = 0x001;
    public static final int EMOTION_TYPE_FLOWER = 0x002;
    public static final int EMOTION_TYPE_BELL = 0x003;
    public static final int EMOTION_TYPE_VEHICLE = 0x004;
    public static final int EMOTION_TYPE_NUMBER = 0x005;
    public static final int EMOTION_TYPE_DELETE = 0x006;

    public static LinkedHashMap<String, Integer> emojiMap;


    static {
        emojiMap = new LinkedHashMap<>();
        emojiMap.put("[大笑]", R.mipmap.emoji_1_daxiao);
        emojiMap.put("[笑哭]", R.mipmap.emoji_2_xiaoku);
        emojiMap.put("[尴笑]", R.mipmap.emoji_3_gaxiao);
        emojiMap.put("[挤眼笑]", R.mipmap.emoji_4_jiyanxiao);
        emojiMap.put("[愉快]", R.mipmap.emoji_5_yukuai);
        emojiMap.put("[酷]", R.mipmap.emoji_6_ku);
        emojiMap.put("[色]", R.mipmap.emoji_7_se);
        emojiMap.put("[飞吻]", R.mipmap.emoji_8_feiwen);
        emojiMap.put("[亲亲]", R.mipmap.emoji_9_qinqin);
        emojiMap.put("[微笑]", R.mipmap.emoji_10_weixiao);
        emojiMap.put("[考虑]", R.mipmap.emoji_11_kaolv);
        emojiMap.put("[平静]", R.mipmap.emoji_12_pingjing);
        emojiMap.put("[狡猾]", R.mipmap.emoji_13_jiaohua);
        emojiMap.put("[囧]", R.mipmap.emoji_14_jiong);
        emojiMap.put("[闭嘴]", R.mipmap.emoji_15_bizui);
        emojiMap.put("[叹气]", R.mipmap.emoji_16_tanqi);
        emojiMap.put("[睡]", R.mipmap.emoji_17_shui);
        emojiMap.put("[鬼脸]", R.mipmap.emoji_18_guilian);
        emojiMap.put("[吐舌]", R.mipmap.emoji_19_tushe);
        emojiMap.put("[馋]", R.mipmap.emoji_20_chan);
        emojiMap.put("[汗]", R.mipmap.emoji_21_han);
        emojiMap.put("[无奈]", R.mipmap.emoji_22_wunai);
        emojiMap.put("[难过]", R.mipmap.emoji_23_nanguo);
        emojiMap.put("[贪婪]", R.mipmap.emoji_24_tanlan);
        emojiMap.put("[惊讶]", R.mipmap.emoji_25_jingya);
        emojiMap.put("[生气]", R.mipmap.emoji_26_shengqi);
        emojiMap.put("[流泪]", R.mipmap.emoji_27_liulei);
        emojiMap.put("[冷汗]", R.mipmap.emoji_28_lenhan);
        emojiMap.put("[咬牙]", R.mipmap.emoji_29_yaoya);
        emojiMap.put("[恐惧]", R.mipmap.emoji_30_kongju);
        emojiMap.put("[呆]", R.mipmap.emoji_31_dai);
        emojiMap.put("[发怒]", R.mipmap.emoji_32_fanu);
        emojiMap.put("[感冒]", R.mipmap.emoji_33_ganmao);
        emojiMap.put("[发烧]", R.mipmap.emoji_34_fashao);
        emojiMap.put("[受伤]", R.mipmap.emoji_35_shoushang);
        emojiMap.put("[吐]", R.mipmap.emoji_36_tu);
        emojiMap.put("[嘘]", R.mipmap.emoji_37_xu);
        emojiMap.put("[抱抱]", R.mipmap.emoji_38_baobao);
        emojiMap.put("[扮鬼]", R.mipmap.emoji_39_bangui);
        emojiMap.put("[骷髅]", R.mipmap.emoji_40_kulou);
        emojiMap.put("[猪头]", R.mipmap.emoji_41_zhutou);
        emojiMap.put("[便便]", R.mipmap.emoji_42_bianbian);
        emojiMap.put("[玫瑰]", R.mipmap.emoji_43_meigui);
        emojiMap.put("[凋谢]", R.mipmap.emoji_44_diaoxie);
        emojiMap.put("[炸弹]", R.mipmap.emoji_45_zhadan);
        emojiMap.put("[咖啡]", R.mipmap.emoji_46_kafei);
        emojiMap.put("[嘴巴]", R.mipmap.emoji_47_zuiba);
        emojiMap.put("[太阳]", R.mipmap.emoji_48_taiyang);
        emojiMap.put("[月亮]", R.mipmap.emoji_49_yueliang);
        emojiMap.put("[爱心]", R.mipmap.emoji_50_aixin);
        emojiMap.put("[心碎]", R.mipmap.emoji_51_xinsui);
        emojiMap.put("[恭喜]", R.mipmap.emoji_52_gongxi);
        emojiMap.put("[干杯]", R.mipmap.emoji_53_ganbei);
        emojiMap.put("[礼物]", R.mipmap.emoji_54_liwu);
        emojiMap.put("[气球]", R.mipmap.emoji_55_qiqiu);
        emojiMap.put("[火箭]", R.mipmap.emoji_56_huojian);
        emojiMap.put("[保佑]", R.mipmap.emoji_57_baoyou);
        emojiMap.put("[强壮]", R.mipmap.emoji_58_qiangzhuang);
        emojiMap.put("[OK]", R.mipmap.emoji_59_ok);
        emojiMap.put("[鼓掌]", R.mipmap.emoji_60_guzhang);
        emojiMap.put("[拳头]", R.mipmap.emoji_61_quantou);
        emojiMap.put("[强]", R.mipmap.emoji_62_qiang);
        emojiMap.put("[弱]", R.mipmap.emoji_63_ruo);
        emojiMap.put("[胜利]", R.mipmap.emoji_64_shengli);
        emojiMap.put("[爱你]", R.mipmap.emoji_65_aini);
        emojiMap.put("[握手]", R.mipmap.emoji_66_woshou);
    }

    public static int getImgByName(String imgName) {
        Integer integer = emojiMap.get(imgName);
        return integer == null ? -1 : integer;
    }


    /**
     * 根据名称获取当前表情图标R值
     *
     * @param EmotionType 表情类型标志符
     * @param imgName     名称
     * @return
     */
    /*public static int getImgByName(int EmotionType, String imgName) {
        Integer integer = null;
        switch (EmotionType) {
            case EMOTION_CLASSIC_TYPE:
                integer = EMOTION_CLASSIC_MAP.get(imgName);
                break;
            default:
//				LogUtils.e("the emojiMap is null!! Handle Yourself ");
                break;
        }
        return integer == null ? -1 : integer;
    }*/

    /**
     * 根据类型获取表情数据
     * <p>
     * //     * @param EmotionType
     *
     * @return
     */
    /*public static ArrayMap<String, Integer> getEmojiMap(int EmotionType) {
        ArrayMap EmojiMap = null;
        switch (EmotionType) {
            case EMOTION_CLASSIC_TYPE:
                EmojiMap = EMOTION_CLASSIC_MAP;
                break;
            default:
                EmojiMap = EMPTY_MAP;
                break;
        }
        return EmojiMap;
    }*/
    public static List<String> getEmojiList(Context context, int emotion_map_type) {

        String source = readAssertResource(context, "emoji.json");
        EmojiData emojiData = JsonUtil.toObject(source, EmojiData.class);
        List<String> list = new ArrayList<>();
        if (emotion_map_type == EMOTION_TYPE_PEOPLE) {
            list = emojiData.people;
        } else if (emotion_map_type == EMOTION_TYPE_FLOWER) {
            list = emojiData.flower;
        } else if (emotion_map_type == EMOTION_TYPE_BELL) {
            list = emojiData.bell;
        } else if (emotion_map_type == EMOTION_TYPE_VEHICLE) {
            list = emojiData.vehicle;
        } else if (emotion_map_type == EMOTION_TYPE_NUMBER) {
            list = emojiData.number;
        }
        return list;
    }

    public static String readAssertResource(Context context, String strAssertFileName) {
        AssetManager assetManager = context.getAssets();
        String strResponse = "";
        try {
            InputStream ims = assetManager.open(strAssertFileName);
            strResponse = getStringFromInputStream(ims);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return strResponse;
    }

    private static String getStringFromInputStream(InputStream a_is) {
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();
        String line;
        try {
            br = new BufferedReader(new InputStreamReader(a_is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                }
            }
        }
        return sb.toString();
    }
}
